﻿
name: OINT | Тестирование Bitrix24

# Controls when the workflow will run
on:
  workflow_dispatch:

jobs:

  Decode:
    runs-on: ubuntu-latest
    if: ${{ always() }}
    steps:

      - uses: actions/checkout@v4 

      - name: Расшифровать тестовые данные
        run: gpg --quiet --batch --yes --decrypt --passphrase="$ENC_JSON" --output ./data.json ./data.json.gpg        
        env:
          ENC_JSON: ${{ secrets.ENC_JSON }}
      - name: Записать тестовые данные в кэш
        uses: actions/cache/save@v3
        with:
          key: test-data
          path: ./data.json

  Build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4             
      - uses: otymko/setup-onescript@v1.4
        with:
          version: 1.9.0 

      - name: Установить asserts и 1testrunner
        run: |
          opm install asserts
          opm install 1testrunner

      - name: Установить OInt
        run: |
          cd ./src/ru/OInt
          opm build
          opm install *.ospx    

      - name: Записать артефакт
        uses: actions/upload-artifact@v4
        with:
          name: oint
          path: ./src/ru/OInt/*.ospx


  Testing-Bitrix24:
    runs-on: ubuntu-latest
    needs: [Decode, Build]
    steps:

      - uses: actions/checkout@v2 
      - uses: otymko/setup-onescript@v1.4
        with:
          version: 1.9.0 
      
      - name: Получить тестовые данные из кэша
        uses: actions/cache/restore@v3
        with:
          key: test-data
          path: ./data.json
      
      - name: Установить asserts и 1testrunner
        run: |
          opm install asserts
          opm install 1testrunner

      - name: Установить OInt
        run: |
          cd ./src/ru/OInt
          opm build
          opm install *.ospx



      - name: Работа с токеном
        if: ${{ cancelled() }} == false
        run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "Б24_РаботаСТокеном"

      - name: Серверное время
        if: ${{ cancelled() }} == false
        run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "Б24_СерверноеВремя"

      - name: Работа с новостями
        if: ${{ cancelled() }} == false
        run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "Б24_РаботаСНовостями"

      - name: Работа с задачами
        if: ${{ cancelled() }} == false
        run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "Б24_РаботаСЗадачами"

      - name: Работа с диском
        if: ${{ cancelled() }} == false
        run: oscript /home/runner/.local/share/ovm/current/lib/1testrunner/src/main.os -run ./src/ru/OInt/tests/Modules/internal/OPI_Тесты.os "Б24_РаботаСДиском"

      - name: Записать логи
        if: ${{ cancelled() }} == false
        uses: actions/cache/save@v3
        with:
          key: logs-Bitrix24
          path: ./docs/ru/results/Bitrix24


      - name: Записать измененные данные
        if: ${{ cancelled() }} == false
        uses: actions/cache/save@v3
        with:
          key: test-data_new
          path: ./data.json

  Encode:
    runs-on: ubuntu-latest
    needs: [Testing-Bitrix24]
    if: ${{ always() }}
    permissions:
      contents: write
  
    steps:

      - uses: actions/checkout@v2 

      - name: Обновить данные в репозитории
        run: git pull https://github.com/Bayselonarrend/OpenIntegrations

      - name: Получить тестовые данные из кэша
        uses: actions/cache/restore@v3
        with:
          key: test-data_new
          path: ./data.json

      - name: Зашифровать данные обратно
        continue-on-error: false
  
        run: |
          rm -f ./data.json.gpg
          gpg --batch --symmetric --cipher-algo AES256 --passphrase="$ENC_JSON" data.json
          rm -f ./data.json
        env:
          ENC_JSON: ${{ secrets.ENC_JSON }}

      - name: Получить логи Bitrix24
        uses: actions/cache/restore@v3
        with:
          key: logs-Bitrix24
          path: ./docs/ru/results/Bitrix24


      - name: Очистка логов Bitrix24
        run: |
          curl -L \
          -X DELETE \
          -H "Accept: application/vnd.github+json" \
          -H "Authorization: Bearer ${{ secrets.TOKEN }}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          "https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=logs-Bitrix24"


      - name: Записать данные    
        uses: stefanzweifel/git-auto-commit-action@v5   
        with:
          commit_user_name: Vitaly the Alpaca (bot) 
          commit_user_email: vitaly.the.alpaca@gmail.com
          commit_author: Vitaly the Alpaca <vitaly.the.alpaca@gmail.com>
          commit_message: Обновление зашифрованных данных по результатам тестов (workflow)


  Clear-Cache:
    runs-on: ubuntu-latest
    needs: [Testing-Bitrix24, Encode]
    if: ${{ always() }}
    steps:
      - name: Очистка основного кэша
        run: |
          curl -L \
          -X DELETE \
          -H "Accept: application/vnd.github+json" \
          -H "Authorization: Bearer ${{ secrets.TOKEN }}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          "https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data"

      - name: Очистка кэша Google
        run: |
          curl -L \
          -X DELETE \
          -H "Accept: application/vnd.github+json" \
          -H "Authorization: Bearer ${{ secrets.TOKEN }}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          "https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data_google"

      - name: Очистка кэша Twitter
        run: |
          curl -L \
          -X DELETE \
          -H "Accept: application/vnd.github+json" \
          -H "Authorization: Bearer ${{ secrets.TOKEN }}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          "https://api.github.com/repos/Bayselonarrend/OpenIntegrations/actions/caches?key=test-data_new"
